package com.example.mapper;

import com.example.model.SqlExecution;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
public interface SqlExecutionMapper {
    
    // 插入SQL执行记录
    int insert(SqlExecution execution);
    
    // 根据ID查询执行记录
    SqlExecution findById(@Param("id") Long id);
    
    // 根据用户ID查询执行记录
    List<SqlExecution> findByUserId(@Param("userId") Long userId, @Param("limit") Integer limit);
    
    // 查询所有执行记录
    List<SqlExecution> findAll(@Param("limit") Integer limit);
    
    /**
     * 分页查询所有执行记录
     * @param offset 起始位置
     * @param limit 每页记录数
     * @return 执行记录列表
     */
    List<SqlExecution> findAllPaged(@Param("offset") int offset, @Param("limit") int limit);
    
    // 查询执行记录总数
    int count();
    
    // 查询特定用户的执行记录数
    int countByUserId(@Param("userId") Long userId);
    
    // 查询成功执行的记录数
    int countSuccessful();
    
    // 查询失败执行的记录数
    int countFailed();
    
    // 删除指定用户的所有执行记录
    int deleteByUserId(@Param("userId") Long userId);
} 